package com.attendance.sz.up.service;

/**
 * 作者：TanTun
 * 时间：2017/6/4
 * 邮箱：32965926@qq.com
 * 描述：
 */

public interface IService<TValue, TResult> {

    /**
     * 作者：TanTun
     * 时间：2017/2/26
     * 邮箱：32965926@qq.com
     * 描述：请求结果通知
     */
    interface OnServiceResultListener<TValue, TResult> {
        /**
         * 通知请求结果
         *
         * @param request 请求
         * @param result 结果
         */
        void onResult(TValue request, TResult result);
    }

    /**
     * 作者：TanTun
     * 时间：2017/2/26
     * 邮箱：32965926@qq.com
     * 描述：发生错误通知
     */
    interface OnServiceErrorListener<TValue> {
        /**
         * 发生错误
         *
         * @param request 请求
         * @param message 错误信息
         */
        void onError(TValue request, String message);
    }

    void setOnRequestResultListener(OnServiceResultListener<TValue, TResult> onServiceResultListener);
    void setOnServiceErrorListener(OnServiceErrorListener<TValue> onServiceErrorListener);
    boolean query(TValue value);
}
